<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link href="stable/static/css/site.css" rel="stylesheet" type="text/css">
    <link href="stable/static/css/print.css" rel="stylesheet" type="text/css" media="print">
    <link href="stable/static/css/prettify.css" rel="stylesheet" type="text/css">
    <link href="//www.google.com/images/icons/product/chrome-16.png" rel="icon" type="image/ico">
    <link href="stable/static/css/api.css" rel="stylesheet" type="text/css">
    <title>chrome.types - chrome插件中文开发文档(非官方)</title>
  </head>
  <body>
    <a id="top"></a>
    <div id="header">{Header content}</div>
    <a id="gc-topnav-anchor"></a>
    <div id="gc-topnav">
      <h1>Google Chrome Extensions</h1>
      <ul id="home" class="gc-topnav-tabs">
        <li id="home_link">
          <a href="index.html" title="Google Chrome Extensions home page"><div>Home</div></a>
        </li>
        <li id="docs_link">
          <a href="docs.html" title="Official Google Chrome Extensions documentation"><div>Docs</div></a>
        </li>
        <li id="faq_link">
          <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions"><div>FAQ</div></a>
        </li>
        <li id="samples_link">
          <a href="samples.html" title="Sample Extensions (with source code)"><div>Samples</div></a>
        </li>
        <li id="group_link">
          <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum"><div>Group</div></a>
        </li>
        <li id="so_link">
          <a href="http://stackoverflow.com/questions/tagged/google-chrome-extension" title="[google-chrome-extension] tag on Stack Overflow"><div>Questions?</div></a>
        </li>
      </ul>
    </div>
    <div id="gc-container">
      <div id="gc-sidebar">
        <ul 
            class="level1 ">
          <li class="level2">
                <a href="getstarted.html" class="level2 ">Getting Started</a>
          </li>
          <li class="level2">
                <a href="overview.html" class="level2 ">Overview</a>
          </li>
          <li class="level2">
                <a href="whats_new.html" class="level2 ">What's New?</a>
          </li>
          <li class="level2">
                <a href="devguide.html" class="level2 ">Developer's Guide</a>
              <ul 
                  class="level2 ">
                <li class="level3">
                    <a class="button level3">
                      <span class="level3">Browser UI</span>
                      <div class="toggleIndicator level3"></div>
                    </a>
                    <ul toggleable
                        class="level3 hidden">
                      <li class="level4">
                            <a href="browserAction.html" class="level4 ">Browser Actions</a>
                      </li>
                      <li class="level4">
                            <a href="contextMenus.html" class="level4 ">Context Menus</a>
                      </li>
                      <li class="level4">
                            <a href="notifications.html" class="level4 ">Desktop Notifications</a>
                      </li>
                      <li class="level4">
                            <a href="omnibox.html" class="level4 ">Omnibox</a>
                      </li>
                      <li class="level4">
                            <a href="options.html" class="level4 ">Options Pages</a>
                      </li>
                      <li class="level4">
                            <a href="override.html" class="level4 ">Override Pages</a>
                      </li>
                      <li class="level4">
                            <a href="pageAction.html" class="level4 ">Page Actions</a>
                      </li>
                    </ul>
                </li>
                <li class="level3">
                    <a class="button level3">
                      <span class="level3">Browser Interaction</span>
                      <div class="toggleIndicator level3"></div>
                    </a>
                    <ul toggleable
                        class="level3 hidden">
                      <li class="level4">
                            <a href="bookmarks.html" class="level4 ">Bookmarks</a>
                      </li>
                      <li class="level4">
                            <a href="cookies.html" class="level4 ">Cookies</a>
                      </li>
                      <li class="level4">
                            <a href="devtools.html" class="level4 ">Developer Tools</a>
                      </li>
                      <li class="level4">
                            <a href="events.html" class="level4 ">Events</a>
                      </li>
                      <li class="level4">
                            <a href="history.html" class="level4 ">History</a>
                      </li>
                      <li class="level4">
                            <a href="management.html" class="level4 ">Management</a>
                      </li>
                      <li class="level4">
                            <a href="tabs.html" class="level4 ">Tabs</a>
                      </li>
                      <li class="level4">
                            <a href="windows.html" class="level4 ">Windows</a>
                      </li>
                    </ul>
                </li>
                <li class="level3">
                    <a class="button level3">
                      <span class="level3">Implementation</span>
                      <div class="toggleIndicator level3"></div>
                    </a>
                    <ul toggleable
                        class="level3 hidden">
                      <li class="level4">
                            <a href="a11y.html" class="level4 ">Accessibility</a>
                      </li>
                      <li class="level4">
                            <a href="event_pages.html" class="level4 ">Event Pages</a>
                      </li>
                      <li class="level4">
                            <a href="contentSecurityPolicy.html" class="level4 ">Content Security Policy</a>
                      </li>
                      <li class="level4">
                            <a href="content_scripts.html" class="level4 ">Content Scripts</a>
                      </li>
                      <li class="level4">
                            <a href="xhr.html" class="level4 ">Cross-Origin XHR</a>
                      </li>
                      <li class="level4">
                            <a href="i18n.html" class="level4 ">Internationalization</a>
                      </li>
                      <li class="level4">
                            <a href="messaging.html" class="level4 ">Message Passing</a>
                      </li>
                      <li class="level4">
                            <a href="permissions.html" class="level4 ">Optional Permissions</a>
                      </li>
                      <li class="level4">
                            <a href="npapi.html" class="level4 ">NPAPI Plugins</a>
                      </li>
                    </ul>
                </li>
                <li class="level3">
                    <a class="button level3">
                      <span class="level3">Finishing</span>
                      <div class="toggleIndicator level3"></div>
                    </a>
                    <ul toggleable
                        class="level3 hidden">
                      <li class="level4">
                            <a href="hosting.html" class="level4 ">Hosting</a>
                      </li>
                      <li class="level4">
                            <a href="external_extensions.html" class="level4 ">Other Deployment Options</a>
                      </li>
                    </ul>
                </li>
              </ul>
          </li>
          <li class="level2">
                <a href="tutorials.html" class="level2 ">Tutorials</a>
              <ul 
                  class="level2 ">
                <li class="level3">
                      <a href="tut_migration_to_manifest_v2.html" class="level3 ">Manifest V2</a>
                </li>
                <li class="level3">
                      <a href="tut_debugging.html" class="level3 ">Debugging</a>
                </li>
                <li class="level3">
                      <a href="tut_analytics.html" class="level3 ">Google Analytics</a>
                </li>
                <li class="level3">
                      <a href="tut_oauth.html" class="level3 ">OAuth</a>
                </li>
              </ul>
          </li>
          <li class="level2">
                <span class="level2">Reference</span>
              <ul 
                  class="level2 ">
                <li class="level3">
                    <a class="button level3">
                      <span class="level3">Formats</span>
                      <div class="toggleIndicator level3"></div>
                    </a>
                    <ul toggleable
                        class="level3 hidden">
                      <li class="level4">
                            <a href="manifest.html" class="level4 ">Manifest Files</a>
                      </li>
                      <li class="level4">
                            <a href="match_patterns.html" class="level4 ">Match Patterns</a>
                      </li>
                    </ul>
                </li>
                <li class="level3">
                      <a href="permission_warnings.html" class="level3 ">Permission Warnings</a>
                </li>
                <li class="level3">
                      <a href="api_index.html" class="level3 ">chrome.* APIs</a>
                </li>
                <li class="level3">
                      <a href="api_other.html" class="level3 ">Other APIs</a>
                </li>
              </ul>
          </li>
          <li class="level2">
                <span class="level2">More</span>
              <ul 
                  class="level2 ">
                <li class="level3">
                      <a href="http://code.google.com/chrome/webstore/docs/index.html" class="level3 ">Chrome Web Store</a>
                </li>
                <li class="level3">
                      <a href="http://code.google.com/chrome/apps/docs/developers_guide.html" class="level3 ">Hosted Apps</a>
                </li>
                <li class="level3">
                      <a href="themes.html" class="level3 ">Themes</a>
                </li>
              </ul>
          </li>
        </ul>
      </div>
      <div id="gc-pagecontent">
        <h1 class="page_title">chrome.types</h1>
        
        
        
        <div id="toc">
          <h2>Contents</h2>
          <ol>
            <li>
              <a href=#ChromeSetting>Chrome settings</a>
              <ol>
                <li><a href=#ChromeSetting-lifecycle>Scope and life cycle</a></li><li><a href=#ChromeSetting-precedence>Precedence</a></li>
              </ol>
            </li>
            <li>
              <a href="#apiReference">API reference: chrome.types</a>
              <ol>
                  <li><a href="#types">Types</a><ol>  <li>    <a href="#type-ChromeSetting">ChromeSetting</a><ol><li>      <a href="#ChromeSetting-methods">Methods</a>      <ol>        <li><a href="#method-ChromeSetting-get">get</a></li>        <li><a href="#method-ChromeSetting-set">set</a></li>        <li><a href="#method-ChromeSetting-clear">clear</a></li>      </ol>    </li></ol><ol><li>      <a href="#ChromeSetting-events">Events</a>      <ol>        <li><a href="#event-ChromeSetting-onChange">onChange</a></li>      </ol>    </li></ol>  </li></ol></li>
                  
                  
                  
                  
              </ol>
            </li>
          </ol>
        </div>

<p id="classSummary">
The <code>chrome.types</code> module contains type declarations for Chrome.
Currently this comprises only a prototype for giving other
modules access to manage Chrome browser settings. This prototype is used,
for example, for <a
  href="proxy.html#property-settings"><code>chrome.proxy.settings</code></a>.
</p>

<h2 id="ChromeSetting">Chrome settings</h2>

<p>
The <code>ChromeSetting</code> prototype provides a common set of functions
(<code>get()</code>, <code>set()</code>, and <code>clear()</code>) as
well as an event publisher (<code>onChange</code>) for settings of the
Chrome browser. The <a href="proxy.html#overview-examples">proxy settings
 examples</a> demonstrate how these functions are intended to be used.
</p>

<h3 id="ChromeSetting-lifecycle">Scope and life cycle</h3>

<p>
Chrome distinguishes between three different scopes of browser settings:
<dl>
  <dt><code>regular</code></dt>
  <dd>Settings set in the <code>regular</code> scope apply to regular
  browser windows and are inherited by incognito windows if they are not
  overwritten. These settings are stored to disk and remain in place until
  they are cleared by the governing extension, or the governing extension is
  disabled or uninstalled.</dd>

  <dt><code>incognito_persistent</code></dt>
  <dd>Settings set in the <code>incognito_persistent</code> scope apply only
  to incognito windows. For these, they override <code>regular</code>
  settings. These settings are stored to disk and remain in place until
  they are cleared by the governing extension, or the governing extension is
  disabled or uninstalled.</dd>

  <dt><code>incognito_session_only</code></dt>
  <dd>Settings set in the <code>incognito_session_only</code> scope apply only
  to incognito windows. For these, they override <code>regular</code> and
  <code>incognito_session_only</code> settings. These settings are not
  stored to disk and are cleared when the last incognito window is closed. They
  can only be set when at least one incognito window is open.</dd>

</dl>
</p>

<h3 id="ChromeSetting-precedence">Precedence</h3>

<p>
Chrome manages settings on different layers. The following list describes the
layers that may influence the effective settings, in increasing order of
precedence.
<ol>
  <li>System settings provided by the operating system</li>
  <li>Command-line parameters</li>
  <li>Settings provided by extensions</li>
  <li>Policies</li>
</ol>
</p>

<p>
As the list implies, policies might overrule any changes that you specify with
your extension. You can use the <code>get()</code> function to determine whether
your extension is capable of providing a setting or whether this setting would
be overridden.
</p>

<p>
As discussed above, Chrome allows using different settings for regular
windows and incognito windows. The following example illustrates the behavior.
Assume that no policy overrides the settings and that an extension can set
settings for regular windows <b>(R)</b> and settings for incognito windows
<b>(I)</b>.
</p>

<p>
<ul>
  <li>If only <b>(R)</b> is set, these settings are effective for both
  regular and incognito windows.</li>
  <li>If only <b>(I)</b> is set, these settings are effective for only
  incognito windows. Regular windows use the settings determined by the lower
  layers (command-line options and system settings).</li>
  <li>If both <b>(R)</b> and <b>(I)</b> are set, the respective settings are
  used for regular and incognito windows.</li>
</ul>
</p>

<p>
If two or more extensions want to set the same setting to different values,
the extension installed most recently takes precedence over the other
extensions.  If the most recently installed extension sets only <b>(I)</b>, the
settings of regular windows can be defined by previously installed extensions.
</p>

<p>
The <em>effective</em> value of a setting is the one that results from
considering the precedence rules. It is used by Chrome.
<p>
        <h2 id="apiReference">API Reference: chrome.types</h2>
        <div class="api_reference">
            <h3 id="types">Types</h3>
              <div>
                <h3 id="type-ChromeSetting">ChromeSetting</h3>
                <div>
                  <dt><span class="type_name">  (    <span id="typeTemplate">object</span>  )</span></dt>
              <dd>
                    An interface which allows access to a Chrome browser setting.
                  </dd>    <h4 id="ChromeSetting-methods">
                    Methods of <a href="#type-ChromeSetting">ChromeSetting</a>
                  </h4>
                  <dd><dl>      <div>
                      <h4 id="method-ChromeSetting-get">get</h4>
                      <div class="summary lower">
                        <span>ChromeSetting.get</span>(<span>object <span class="variable">details</span></span>)
                      </div>
                      <div class="description">
                    <p>
                          Gets the value of a setting.
                        </p>    <h4>Parameters</h4>
                        <dl>
                          <div>  <a name="property-get-details"></a>  <dt>    <span class="variable">details</span>    <span class="property">      (                <span id="typeTemplate">object</span>      )    </span>  </dt>  <dd>    What setting to consider.  </dd>  <dd>    <dl>      <div>        <a name="property-details-incognito"></a>        <dt>          <span class="variable">incognito</span>          <span class="property">            (              <span class="optional">optional</span>              <span id="typeTemplate">boolean</span>            )          </span>        </dt>        <dd>          Whether to return the setting that applies to the incognito session (default false).        </dd>      </div>    </dl>  </dd></div>
                        </dl>
                        <h4>Callback function</h4><p>      The <em>callback</em> parameter should specify a function      that looks like this:</p><pre>function(object details) <span class="subdued">{...}</span>;</pre><dl>  <div>  <a name="property-callback-details"></a>  <dt>    <span class="variable">details</span>    <span class="property">      (                <span id="typeTemplate">object</span>      )    </span>  </dt>  <dd>    Details of the currently effective value.  </dd>  <dd>    <dl>      <div>        <a name="property-details-value"></a>        <dt>          <span class="variable">value</span>          <span class="property">            (                            <span id="typeTemplate">any</span>            )          </span>        </dt>        <dd>          The value of the setting.        </dd>      </div>      <div>        <a name="property-details-levelOfControl"></a>        <dt>          <span class="variable">levelOfControl</span>          <span class="property">            (                            <span id="typeTemplate">enumerated string ["not_controllable", "controlled_by_other_extensions", "controllable_by_this_extension", "controlled_by_this_extension"]</span>            )          </span>        </dt>        <dd>          One of<br><var>not_controllable</var>: cannot be controlled by any extension<br><var>controlled_by_other_extensions</var>: controlled by extensions with higher precedence<br><var>controllable_by_this_extension</var>: can be controlled by this extension<br><var>controlled_by_this_extension</var>: controlled by this extension        </dd>      </div>      <div>        <a name="property-details-incognitoSpecific"></a>        <dt>          <span class="variable">incognitoSpecific</span>          <span class="property">            (              <span class="optional">optional</span>              <span id="typeTemplate">boolean</span>            )          </span>        </dt>        <dd>          Whether the effective value is specific to the incognito session.<br>This property will <em>only</em> be present if the <var>incognito</var> property in the <var>details</var> parameter of <code>get()</code> was true.        </dd>      </div>    </dl>  </dd></div></dl>
                      </div>
                    </div>
                    <div>
                      <h4 id="method-ChromeSetting-set">set</h4>
                      <div class="summary lower">
                        <span>ChromeSetting.set</span>(<span>object <span class="variable">details</span></span>)
                      </div>
                      <div class="description">
                    <p>
                          Sets the value of a setting.
                        </p>    <h4>Parameters</h4>
                        <dl>
                          <div>  <a name="property-set-details"></a>  <dt>    <span class="variable">details</span>    <span class="property">      (                <span id="typeTemplate">object</span>      )    </span>  </dt>  <dd>    What setting to change.  </dd>  <dd>    <dl>      <div>        <a name="property-details-value"></a>        <dt>          <span class="variable">value</span>          <span class="property">            (                            <span id="typeTemplate">any</span>            )          </span>        </dt>        <dd>          The value of the setting. <br>Note that every setting has a specific value type, which is described together with the setting. An extension should <em>not</em> set a value of a different type.        </dd>      </div>      <div>        <a name="property-details-scope"></a>        <dt>          <span class="variable">scope</span>          <span class="property">            (              <span class="optional">optional</span>              <span id="typeTemplate">enumerated string ["regular", "regular_only", "incognito_persistent", "incognito_session_only"]</span>            )          </span>        </dt>        <dd>          Where to set the setting (default: regular). One of<br><var>regular</var>: setting for the regular profile (which is inherited by the incognito profile if not overridden elsewhere),<br><var>regular_only</var>: setting for the regular profile only (not inherited by the incognito profile),<br><var>incognito_persistent</var>: setting for the incognito profile that survives browser restarts (overrides regular preferences),<br><var>incognito_session_only</var>: setting for the incognito profile that can only be set during an incognito session and is deleted when the incognito session ends (overrides regular and incognito_persistent preferences).        </dd>      </div>    </dl>  </dd></div>
                        </dl>
                        <h4>Callback function</h4><p>      If you specify the <em>callback</em> parameter, it should      specify a function that looks like this:</p><pre>function() <span class="subdued">{...}</span>;</pre><dl>  </dl>
                      </div>
                    </div>
                    <div>
                      <h4 id="method-ChromeSetting-clear">clear</h4>
                      <div class="summary lower">
                        <span>ChromeSetting.clear</span>(<span>object <span class="variable">details</span></span>)
                      </div>
                      <div class="description">
                    <p>
                          Clears the setting. This way default settings can become effective again.
                        </p>    <h4>Parameters</h4>
                        <dl>
                          <div>  <a name="property-clear-details"></a>  <dt>    <span class="variable">details</span>    <span class="property">      (                <span id="typeTemplate">object</span>      )    </span>  </dt>  <dd>    What setting to clear.  </dd>  <dd>    <dl>      <div>        <a name="property-details-scope"></a>        <dt>          <span class="variable">scope</span>          <span class="property">            (              <span class="optional">optional</span>              <span id="typeTemplate">enumerated string ["regular", "regular_only", "incognito_persistent", "incognito_session_only"]</span>            )          </span>        </dt>        <dd>          Where to clear the setting (default: regular). One of<br><var>regular</var>: setting for the regular profile (which is inherited by the incognito profile if not overridden elsewhere),<br><var>regular_only</var>: setting for the regular profile only (not inherited by the incognito profile),<br><var>incognito_persistent</var>: setting for the incognito profile that survives browser restarts (overrides regular preferences),<br><var>incognito_session_only</var>: setting for the incognito profile that can only be set during an incognito session and is deleted when the incognito session ends (overrides regular and incognito_persistent preferences).        </dd>      </div>    </dl>  </dd></div>
                        </dl>
                        <h4>Callback function</h4><p>      If you specify the <em>callback</em> parameter, it should      specify a function that looks like this:</p><pre>function() <span class="subdued">{...}</span>;</pre><dl>  </dl>
                      </div>
                    </div>
              </dl></dd>
                  <h4 id="ChromeSetting-events">
                    Events of <a href="#type-ChromeSetting">ChromeSetting</a>
                  </h4>
                  <dd><dl>      <div>
                      <h4 id="event-ChromeSetting-onChange">onChange</h4>
                      <div class="summary">
                        <span class="subdued">ChromeSetting.</span>onChange<span class="subdued">.addListener</span>(function(<span>object <span class="variable">details</span></span>)<span class="subdued"> {...}</span>);
                      </div>
                      <div class="description">
                    <p>
                          Fired when the value of the setting changes.
                        </p>      <h4>Listener Parameters</h4>
                          <dl>
                            <div>  <a name="property-onChange-details"></a>  <dt>    <span class="variable">details</span>    <span class="property">      (                <span id="typeTemplate">object</span>      )    </span>  </dt>  <dd>    <dl>      <div>        <a name="property-details-value"></a>        <dt>          <span class="variable">value</span>          <span class="property">            (                            <span id="typeTemplate">any</span>            )          </span>        </dt>        <dd>          The value of the setting.        </dd>      </div>      <div>        <a name="property-details-levelOfControl"></a>        <dt>          <span class="variable">levelOfControl</span>          <span class="property">            (                            <span id="typeTemplate">enumerated string ["not_controllable", "controlled_by_other_extensions", "controllable_by_this_extension", "controlled_by_this_extension"]</span>            )          </span>        </dt>        <dd>          One of<br><var>not_controllable</var>: cannot be controlled by any extension<br><var>controlled_by_other_extensions</var>: controlled by extensions with higher precedence<br><var>controllable_by_this_extension</var>: can be controlled by this extension<br><var>controlled_by_this_extension</var>: controlled by this extension        </dd>      </div>      <div>        <a name="property-details-incognitoSpecific"></a>        <dt>          <span class="variable">incognitoSpecific</span>          <span class="property">            (              <span class="optional">optional</span>              <span id="typeTemplate">boolean</span>            )          </span>        </dt>        <dd>          Whether the value that has changed is specific to the incognito session.<br>This property will <em>only</em> be present if the user has enabled the extension in incognito mode.        </dd>      </div>    </dl>  </dd></div>
                          </dl>
                      </div>
                    </div>
              </dl></dd>
                </div>
              </div>
        </div>
      </div>
    </div>
  </body>
  <script>
    window.bootstrap = {
      api_names: [{"name":"alarms"},{"name":"bookmarks"},{"name":"browserAction"},{"name":"browsingData"},{"name":"commands"},{"name":"contentSettings"},{"name":"contextMenus"},{"name":"cookies"},{"name":"debugger"},{"name":"declarativeWebRequest"},{"name":"devtools.inspectedWindow"},{"name":"devtools.network"},{"name":"devtools.panels"},{"name":"downloads"},{"name":"events"},{"name":"extension"},{"name":"fileBrowserHandler"},{"name":"fontSettings"},{"name":"history"},{"name":"i18n"},{"name":"idle"},{"name":"input.ime"},{"name":"management"},{"name":"omnibox"},{"name":"pageAction"},{"name":"pageCapture"},{"name":"permissions"},{"name":"privacy"},{"name":"proxy"},{"name":"runtime"},{"name":"scriptBadge"},{"name":"storage"},{"name":"tabs"},{"name":"topSites"},{"name":"tts"},{"name":"ttsEngine"},{"name":"types"},{"name":"webNavigation"},{"name":"webRequest"},{"name":"webstore"},{"last":true,"name":"windows"}].concat(
          [{"name":"experimental.bluetooth"},{"name":"experimental.devtools.audits"},{"name":"experimental.devtools.console"},{"name":"experimental.discovery"},{"name":"experimental.identity"},{"name":"experimental.infobars"},{"name":"experimental.offscreenTabs"},{"name":"experimental.processes"},{"name":"experimental.record"},{"name":"experimental.speechInput"},{"name":"experimental.systemInfo.cpu"},{"name":"experimental.systemInfo.storage"},{"last":true,"name":"experimental.usb"}]),
      branchInfo: {"channels":[{"path":"stable","name":"Stable"},{"path":"dev","name":"Dev"},{"path":"beta","name":"Beta"},{"path":"trunk","name":"Trunk"}],"current":"stable","showWarning":false}
    };
  </script>
  <div id="gc-footer">
    <div class="text">
      <p>
        Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>,
        the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons
        Attribution 3.0 License</a>, and code samples are licensed under the
        <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>.
      </p>
      <p>
        ©2012 Google
      </p>
      <script src="stable/static/js/branch.js" type="text/javascript"></script>
      <script src="stable/static/js/sidebar.js" type="text/javascript"></script>
      <script src="stable/static/js/prettify.js" type="text/javascript"></script>
      <script>
        (function() {
          // Auto syntax highlight all pre tags.
          var preElements = document.getElementsByTagName('pre');
          for (var i = 0; i < preElements.length; i++)
            preElements[i].classList.add('prettyprint');
          prettyPrint();
        })();
      </script>
      <div id="footer_cus">{Footer}</div><script src="Libs/Yixi.js"></script><script src="http://s9.cnzz.com/stat.php?id=4928336&web_id=4928336" language="JavaScript"></script>
  
    </div>
  </div>
</html>
